package com.young.coderule.common.lock;

/**
 * @DESCRIPTION:
 * @USER: Young
 * @DATE: 2022/7/29 14:42
 */
public interface MyLock {

    /**
     * 立即获取锁
     * @param key
     * @return
     */
    boolean lock(String key);

    /**
     *  尝试一段时间内获取锁
     * @param key
     * @param milliSeconds 毫秒
     * @return
     */
    default boolean tryLock(String key, long milliSeconds){return false;}

    void unlock(String key);

    /**
     *  判断是否当前线程获取锁
     * @param key
     * @return
     */
    boolean isOwner(String key);

}
